import { loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver, VantResolver } from 'unplugin-vue-components/resolvers'
import { resolve } from 'path'
import basicSsl from '@vitejs/plugin-basic-ssl'
// import { injectHtml } from 'vite-plugin-html'

const CWD = process.cwd()
// https://vitejs.dev/config/
export default ({ mode }) => {
  const { VITE_APP_WEB_URL } = loadEnv(mode, CWD);//VITE_APP_API_URL
  return {
    base: VITE_APP_WEB_URL, // 设置打包路径
    resolve: {
      alias: {
        '@': resolve(__dirname, 'src'),
      },
    },
    server: {
      strictPort: true,
      // host: '10.222.136.250',
      host: '0.0.0.0',
      port: 443,//443
      // host: 'testjianye.hd.xxx.com',
      https: true,
      open: true,
      cors: false,
      // proxy: {
      //   '/api': {
      //     target: VITE_APP_API_URL, // 接口基地址
      //     changeOrigin: true,
      //     secure: true,
      //     rewrite: path => {
      //       console.log(path); // 打印[/api/userInfo] 这就是http-proxy要请求的url,我们基地址实际是没有/api 所以replace掉
      //       return path.replace(/^\/api/, '') + '&debug';
      //     }
      //   }
      // }
    },
    plugins: [
      basicSsl(),
      vue({
        template: {
          // 添加以下内容
          compilerOptions: {
            isCustomElement: tag => tag.startsWith('video-js')
          }
        }
      }),
      // injectHtml({
      //   data: {
      //     vueDevtoolsScript: mode === 'development' ? `<script src="http://localhost:8098"></script>` : ''
      //   }
      // }),
      Components({
        resolvers: [ElementPlusResolver(),VantResolver()],
      }),
      AutoImport({
        resolvers: [ElementPlusResolver(), VantResolver()],
      }),
    ],
    css: { preprocessorOptions: { scss: { charset: false } } },
    build: {
      // minify: false, // 关闭打包混淆
      rollupOptions: {
        output: {
          // 分割打包
          manualChunks(id) {
            if (id.includes('node_modules')) {
              // if(id.includes('element-plus')) {
              //   return 'element-plus'
              // } else
              if(id.includes('vant')) {
                return 'vant'
              } else {
                return 'vendor';
              }
            }
          },
          // manualChunks(id) {
          //   if (id.includes('node_modules')) {
          //     return id.toString().split('node_modules/')[1].split('/')[0].toString()
          //   }
          // },
          // manualChunks: { // 拆分代码
          //   'vue': ['vue', 'vue-router', 'vuex'],
          //   'element-plus': ['element-plus'],
          //   'vant': ['vant'],
          // }
        },
        // external: ['vant']
      },
      // terserOptions: {
      //   compress: {
      //     keep_infinity: true,
      //     drop_console: true, // 生产环境去除console
      //     drop_debugger: true // 生产环境去除debugger
      //   }
      // }
      // commonjsOptions: {
      //   requireReturnsDefault: 'namespace', // 要求ES模块返回其名称空间，但插件不添加标记，从而创建更高效的代码
      // },
    },
    optimizeDeps: {
      // 默认情况下，不在 node_modules 中的，链接的包不会被预构建。使用此选项可强制预构建链接的包。
      // include: [
      //   "element-plus/lib/locale/lang/zh-cn",
      //   "element-plus/lib/locale/lang/en",
      // ],
      // exclude: ['element-plus']
    },
  }
}
